package LeetCode刷题;

/**
 * @program: Java_Study
 * @author: Xiaofan
 * @createTime: 2022-03-10 11:14
 * @description: Functions of this class is
 * 整体思路：
 *
 * 1、快慢指针找到中间节点
 *
 * 2、反转后半段链表，然后得到两段链表
 *
 * 3、合并这两段链表
 **/
public class No重排链表 {
    /**
     * public void reorderList(ListNode head) {
     *         if(head!=null&&head.next!=null){
     *             ListNode slow=head;
     *             ListNode fast=head.next;
     *             while(fast!=null&&fast.next!=null){
     *                 slow=slow.next;
     *                 fast=fast.next.next;
     *             }
     *             ListNode mid=slow.next;//找到中间节点
     *             slow.next=null;//分成两段链表
     *             //反转后面的节点
     *             ListNode pre=null;
     *             while(mid!=null){
     *                 ListNode temp=mid.next;
     *                 mid.next=pre;
     *                 pre=mid;
     *                 mid=temp;
     *             }
     *             //进行合并,将第二条链表中的元素插入到第一条链表元素之间
     *             ListNode h=head;
     *             while(pre!=null){
     *                 ListNode temp=pre.next;//先把指向下一个元素的指针存一下
     *                 pre.next=null;//取出当前元素
     *                 //头插法插入到链表中
     *                 pre.next=h.next;
     *                 h.next=pre;
     *                 //继续往下走 进行插入合并
     *                 pre=temp;
     *                 h=h.next.next;
     *             }
     *         }
     *     }
     */
}